package com.escool.controller;

import java.util.Map;


import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.escool.service.ColegioService;
import com.escool.service.SeccionHasMateriaService;
import com.escool.service.TurnoService;
import com.escool.service.VinSedeSeccionService;


import com.escool.model.TbSedeHasSeccion;
import com.escool.model.TbSedeSeccionHasMateria;




@Controller
public class VinSedeSeccionController {
	

	@Autowired
	ColegioService colegioService;
	
	@Autowired
	VinSedeSeccionService VinSedeSeccionService;

	
	@Autowired
	SeccionHasMateriaService seccionHasMateriaService;
	
	@Autowired
	TurnoService turnoService;
	
	@RequestMapping("showVinSedeSeccion")
	public String showVinSedeSeccion(Map<String, Object> map,HttpServletRequest request){
		try{
			TbSedeHasSeccion sdsec = new TbSedeHasSeccion();
			String idSede = request.getParameter("idSede");
			sdsec.setTbSede(colegioService.findSede(Integer.parseInt(idSede)));
			map.put("VinSedeSeccion", sdsec);
			map.put("TbSedeHasSeccionList", VinSedeSeccionService.listTbSedeHasSeccion(Integer.parseInt(idSede)));
			map.put("turnoList", turnoService.listTurno());
			
		}
		catch(DataAccessException ex){
			ex.printStackTrace();
		}
		catch(Exception ex){
			ex.printStackTrace();
		}
		
		return "/vinSedeSeccion";
		
	}
	
	@RequestMapping(value = "addVinSedeSeccion", method = RequestMethod.POST)
	public String addRoles(@ModelAttribute("VinSedeSeccion") @Valid TbSedeHasSeccion tbVinSedeSeccion, BindingResult result){
		if (!result.hasErrors()) {
			try{
				VinSedeSeccionService.addTbSedeHasSeccion(tbVinSedeSeccion);
			}
			catch(DataAccessException ex){
				ex.printStackTrace();
			}
			catch(Exception ex){
				ex.printStackTrace();
			}
			
			
			
			return "redirect:/showVinSedeSeccion?idSede="+tbVinSedeSeccion.getTbSede().getIdSede();
		}
		return "";
	}
	
	@RequestMapping(value = "editVinSedeSeccion", method = RequestMethod.POST)
	public String editRoles(@ModelAttribute("VinSedeSeccion") @Valid TbSedeHasSeccion tbVinSedeSeccion, BindingResult result){
		if (!result.hasErrors()) {
			try{
				VinSedeSeccionService.editTbSedeHasSeccion(tbVinSedeSeccion);
			}
			catch(DataAccessException ex){
				ex.printStackTrace();
			}
			catch(Exception ex){
				ex.printStackTrace();
			}
			
			return "redirect:/showVinSedeSeccion?idSede="+tbVinSedeSeccion.getTbSede().getIdSede();
		}
		return "";
	}
	
	@RequestMapping(value = "deleteVinSedeSeccion", method = RequestMethod.POST)
	public String delRoles(@ModelAttribute("VinSedeSeccion") @Valid TbSedeHasSeccion tbVinSedeSeccion, BindingResult result){
		if (!result.hasErrors()) {
			try{
				VinSedeSeccionService.delTbSedeHasSeccion(tbVinSedeSeccion.getIdSedeHasSeccion());
			}
			catch(DataAccessException ex){
				ex.printStackTrace();
			}
			catch(Exception ex){
				ex.printStackTrace();
			}
			
			return "redirect:/showVinSedeSeccion?idSede="+tbVinSedeSeccion.getTbSede().getIdSede();
		}
		return "";
	}
	
	
	@RequestMapping("showSeccionHasMateriaService_2")
	public String showSeccionHasMateriaService(Map<String, Object> map,@ModelAttribute("VinSedeSeccion") @Valid TbSedeHasSeccion tbVinSedeSeccion, BindingResult result){
		TbSedeSeccionHasMateria tb_sedeMateria = new TbSedeSeccionHasMateria();
		tb_sedeMateria.setTbSedeHasSeccion(VinSedeSeccionService.findTbSedeHasSeccion(tbVinSedeSeccion.getIdSedeHasSeccion()));
		map.put("tbSeccionHasMateriaService",tb_sedeMateria);
		map.put("TbSedeSeccionHasMateriaList", seccionHasMateriaService.listTbSedeSeccionHasMateria(tb_sedeMateria.getTbSedeHasSeccion().getIdSedeHasSeccion()));
		return "/seccionHasMateriaService";
	}

}
